/*
 * AtivarSAT.h
 *
 * @author Bematech S.A.
 */

#ifndef __BILBAO_PROTOCOL_SERIAL_COMMAND_ATIVAR_SAT_CLASS_H__
#define __BILBAO_PROTOCOL_SERIAL_COMMAND_ATIVAR_SAT_CLASS_H__

#include "bilbao/protocol/serial/ASerialCommand.h"

namespace bilbao
{
	namespace protocol
	{
		namespace serial
		{
			namespace command
			{
				enum E_SUB_COMANDO
				{
					AC_SAT = 1,
					ICP_BRASIL = 2
				};

				enum E_C_UF
				{
					AC = 12, // Acre
					AL = 27, // Alagoas
					AP = 16, // Amapá
					AM = 13, // Amazonas
					BA = 29, // Bahia
					CE = 23, // Ceará
					DF = 53, // Distrito Federal
					ES = 32, // Espírito Santo
					GO = 52, // Goiás
					MA = 21, // Maranhão
					MT = 51, // Mato Grosso
					MS = 50, // Mato Grosso do Sul
					MG = 31, // Minas Gerais
					PA = 15, // Pará
					PB = 25, // Paraíba
					PR = 41, // Paraná
					PE = 26, // Pernambuco
					PI = 22, // Piauí
					RR = 14, // Roraima
					RO = 11, // Rondônia
					RJ = 33, // Rio de Janeiro
					RN = 24, // Rio Grande do Norte
					RS = 43, // Rio Grande do Sul
					SC = 42, // Santa Catarina
					SP = 35, // São Paulo
					SE = 28, // Sergipe
					TO = 17  // Tocantins
				};

				class AtivarSAT:
						public ASerialCommand
				{
				public:
					/*
					 * Construtor
					 *
					 * Parâmetros
					 * 0 - subComando
					 * 1 - codigoDeAtivacao
					 * 2 - CNPJ
					 * 3 - cUF
					 */
					AtivarSAT( const String&, const String&, const String&, const String& );

					/*
					 * Destrutor
					 */
					virtual ~AtivarSAT( void );

					/*
					 * Getters parâmetros
					 */
					inline E_SUB_COMANDO SubComando( void ) { return _subComando; }
					inline String Cnpj( void ) { return _cnpj; }
					inline E_C_UF CUF( void ) { return _cUF; }

					/*
					 * Setters parâmetros
					 */
					inline void SubComando( E_SUB_COMANDO subComando ) { _subComando = subComando; }
					inline void Cnpj( const String& cnpj ) { _cnpj = cnpj; }
					inline void CUF( E_C_UF cUF ) { _cUF = cUF; }

				private:
					/*
					 *
					 */
					E_SUB_COMANDO _subComando;

					/*
					 *
					 */
					String _cnpj;

					/*
					 *
					 */
					E_C_UF _cUF;

				}; // class AtivarSAT
			}// namespace command
		} // namespace serial
	} // namespace protocol
} // namespace bilbao

#endif // __BILBAO_PROTOCOL_SERIAL_COMMAND_ATIVAR_SAT_CLASS_H__
